#ifndef SCENE_H
#define SCENE_H

class Scene;

#include "geometry.h"
#include "material.h"
#include "light.h"

#include <vector>
typedef std::vector<Geometry*> GeometryContainer;
typedef GeometryContainer::const_iterator GeometryIterator;

class Scene
{
  public:
    Scene();
    ~Scene();
    void loadAttributes(std::istream &inData);
    Collision intersectScene(Ray r);
    void cast(Ray r, Color &targetColor);
  private:
    GeometryContainer m_geometry;
    void m_loadGeometry(std::istream &inData);
    void m_loadLight(std::istream &inData);
    void m_loadMaterial(std::istream &inData);
};

#endif

